home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok17.lha / IFFtoImage / Sources / Fenster.def next >
Text File  |  1993-08-15  |  4KB  |  117 lines

  1. DEFINITION MODULE Fenster;
  2.  
  3. (* Definitionsmodul zum Hilfsmodul zur Erstellung einfacher Fenster
  4.    unter Intuition. *)
  5. FROM Intuition IMPORT IntuiMessagePtr, IDCMPFlagSet,
  6.                       ScreenPtr, WindowPtr;
  7. FROM Graphics  IMPORT RastPortPtr, ViewPortPtr;
  8. FROM Exec      IMPORT MsgPortPtr;
  9.  
  10.  
  11. PROCEDURE BildSchirm():ScreenPtr;
  12.  
  13.      (* Prozedur zum einfachen Öffnen eines Screens, liefert
  14.         bei Erfolg einen Zeiger auf den geöffneten Screen zurück.*) 
  15.     
  16.         
  17. PROCEDURE FensterAuf(links,oben,breit,hoch:INTEGER;
  18.                      t:ARRAY OF CHAR;sP:ScreenPtr):WindowPtr;
  19.  
  20.      (*         links : Abstand des Fensters von der linken
  21.                         Bildschirmkante,
  22.                 oben  : Abstand des Fensters von der Bildschirm-
  23.                         oberkante,
  24.                 breit : Breite des Fensters,
  25.                 hoch  : Höhe des Fensters.
  26.                 Alle Werte in Pixel!
  27.                 
  28.                 t     : Titel des Fensters. (ein String!)
  29.                 
  30.                 sP    : Zeiger auf aktuellen Screen.
  31.                 
  32.                 return: Zeiger auf das Fenster.                 *)
  33.  
  34.  
  35. PROCEDURE Info(up:MsgPortPtr;VAR code:CARDINAL):IDCMPFlagSet;
  36.  
  37.      (* up : Ist der MessagePortPointer, der im Anwenderprogramm
  38.              mittels up := wp^.userPort; geholt werden muß.
  39.              wp ist dabei der Fensterzeiger, den die Funktions-
  40.              Prozedur FensterAuf zurück gibt.
  41.              
  42.       code : Rückgabewert, z.B. Tastatur-Scan-Code.
  43.              
  44.         return : Info ist eine Funktions-Prozedur, die den 
  45.                  Wert der Record-Variablen class zurück gibt.   *)       
  46.  
  47.  
  48. PROCEDURE CLS(rp:RastPortPtr;b,h:INTEGER);
  49.  
  50.      (* rp : ist der Zeiger auf den RastPort des Fensters, 
  51.              er wird mittels rp := wp^.rPort geholt. 
  52.              
  53.         b  : ist die Breite (- 3 Pixel) des Fensterausschnitts, 
  54.              der mit der Hintergrundfarbe gefüllt wird.
  55.              
  56.         h  : ist die Höhe (-2 Pixel) des Fensterausschnitts ...
  57.         
  58.        Bem.: Als linker oberer Eckpunkt wird (1/1) angenommen.   *)
  59.      
  60.      
  61. PROCEDURE Farben(vp:ViewPortPtr);
  62.  
  63.      (* Diese Prozedur dient zur Definition der Zeichenfarben.
  64.      
  65.         vp : ist der ViewPortPtr des Screens, er wird aus dem
  66.              ScreenPtr sp mittels vp := ADR(sp^.viewPort)
  67.              gewonnen.                                           *)
  68.      
  69.      
  70. (* Private *) PROCEDURE Length(t:ARRAY OF CHAR):INTEGER;
  71.  
  72.      (* Length(t) gibt die Länge des Strings t zurück. 
  73.         Bei der kommerziellen Version des M2Amiga-Kompilers
  74.         gibt es ein MODULE Strings, in dem auch eine Prozedur
  75.         Length(t) existiert. Da wir den hier nicht voraussetzen, 
  76.         müssen wir Length(t) selbst bauen!                     
  77.         
  78.         *Private*, weil die Prozedur Length(t) nur innerhalb
  79.         dieses Moduls verwendet wird!                            *)
  80.         
  81.         
  82. PROCEDURE Print(rp:RastPortPtr;f,x,y:INTEGER;t:ARRAY OF CHAR);
  83.  
  84.      (* Print(rp,x,y,t) ist so etwas ähnliches wie das alte
  85.         'PRINT AT' von BASIC. 
  86.         
  87.         rp : RastPortPtr des Fensters in den geschrieben
  88.              werden soll. 
  89.              
  90.         f  : ist die Farbnummer des Schreibstiftes (0..3).    
  91.              
  92.         x,y: sind die x- und y-Koordinaten (linke obere Ecke)
  93.              in Pixel an der der Text beginnen soll. 
  94.              
  95.         t  : ist nun der zu schreibende Textstring.              *)
  96.      
  97.      
  98. PROCEDURE Echo(rp:RastPortPtr;f,x,y:INTEGER;t:CHAR);
  99.  
  100.      (* Dient dazu ein einzelnes ASCII-Zeichen in einem Fenster
  101.         auszugeben. Anwendung: Tastaturecho erzeugen, da dies
  102.         bei einem Intuition-Fenster fehlt!
  103.         
  104.         rp, f, x, und y haben die gleiche Bedeutung wie bei Print,
  105.         t ist hier aber nur ein einzelner CHAR.                  *)
  106.         
  107.                   
  108. PROCEDURE GetASCII(up:MsgPortPtr):CARDINAL;
  109.  
  110.      (* Holt den ASCII-Wert eines Zeichens vom Intuition-
  111.         MessagePort ab.                                          *)
  112.         
  113.         
  114. END Fenster.
  115.                       
  116.       
  117.